npm run script
プログラムは書けないので、条件分岐はきびしい
例:NODE_ENV===productionの時はsourcemapを埋め込まない、など
code:package.json
"scripts": {
"postinstall": "npm run build",
"start": "node run-server.js",
"start:dev": "DEBUG=gyazz* node-dev run-server.js",
"build": "npm run babel && npm run browserify && npm run sass && gulp build",
"babel": "babel src/ --out-dir build/ --source-maps inline",
// (略)
}
実行する
$ npm run build
runに続けてコマンド名で実行する
$ npm start
$ npm test
startとtestはrunを省略できる
$ npm run babel
$ npm run babel -- --watch
間に--を入れてから続けて付けたオプションはscriptに渡される
$ babel src/ --out-dir build/ --source-maps inline --watch
が実行される
npm v3からの機能なので、node本体が0.10とかだと動かない
pre, post hook
prestartやpostinstallなどのscriptを書いておくと、startやinstallの前に実行してくれる
npm installしたらビルドが走る、とか
プロジェクトルートのnode_modules/にpathが通った状態で実行される
./node_modules/.bin/babelとか書かなくてok
でも./node_modules/.bin/にコマンドが無い時に実行するとシステム内の他のpathを見に行ってしまうので、きっちり./node_modules/.bin/を付けて書く人もいる
gulpなどもnpm runを通して実行すると、package.jsonで指定されたバージョンのgulpを実行できる nodeの慣習
npm run buildしてtestとstartで開発に必要な事はだいたいできるようにする
npmライブラリのソース読む時はとりあえずpackage.jsonのscriptsを見るとよい
gulpよりもツールそれぞれに付属してるコマンドを直接使ったほうが楽な場合がある もちろんgulpのままの方がいい場合もある
sassのビルドなど、いくつかをgulpからnpm run scriptに引っ越した(gyazz) shokai.icon
1. まずgulpはnpm run buildから呼び出すようにする
2. 少しずつscriptsに移動させる
npm run scssとかnpm run babelとか
npm run buildで全て実行されるようにしておく
3. いつのまにかgulpfileがすっきりしている!!